//============================================================================================
/**
 * @file	zkn2_main.h
 * @brief	金銀図鑑画面 メイン処理
 * @author	Hiroyuki Nakamura
 * @date	08.08.26
 */
//============================================================================================
#ifndef	ZKN2_MAIN_H
#define	ZKN2_MAIN_H

#include "system/msgdata.h"
//#include "system/numfont.h"
#include "system/wordset.h"
#include "system/cursor_move.h"
#include "system/snd_tool.h"
#include "system/bgwinfrm.h"
#include "application/zukanlist/zukan.h"
#include "zkn2_snd_def.h"

// 日本版未修正バグ定義
#define	BTS_5499_FIX	( GS_BTS5499_20090707_FIX )	// 未登録ポケモンに言語アイコンが表示されるバグ
#define	BTS_5503_FIX	( GS_BTS5503_20090707_FIX )	// 分布スクロールバーの処理中に場所が点滅しないバグ


//============================================================================================
//	定数定義
//============================================================================================

#define ZKN2_POKELIST_TBL_MAX	( MONSNO_END )	// テーブル数 = 全ポケモンの数

// BGフレーム
#define	ZKN2_BGF_COVER_M	( GF_BGL_FRAME0_M )
#define	ZKN2_BGF_UPPER_M	( GF_BGL_FRAME1_M )
#define	ZKN2_BGF_CENTER_M	( GF_BGL_FRAME2_M )
#define	ZKN2_BGF_UNDER_M	( GF_BGL_FRAME3_M )
#define	ZKN2_BGF_COVER_S	( GF_BGL_FRAME0_S )
#define	ZKN2_BGF_UPPER_S	( GF_BGL_FRAME1_S )
#define	ZKN2_BGF_CENTER_S	( GF_BGL_FRAME2_S )
#define	ZKN2_BGF_UNDER_S	( GF_BGL_FRAME3_S )

#define	ZKN2_POKEICON_PUT_H_MAX		( 5 )	// リストページ：ポケモンアイコン配置数Ｘ
#define	ZKN2_POKEICON_PUT_V_MAX		( 5 )	// リストページ：ポケモンアイコン配置数Ｙ
#define	ZKN2_POKEICON_SEL_V_MAX		( 3 )	// リストページ：ポケモンアイコン選択数Ｙ
// リストページ：ポケモンアイコン配置数
#define	ZKN2_POKEICON_PUT_MAX		( ZKN2_POKEICON_PUT_H_MAX * ZKN2_POKEICON_PUT_V_MAX )
// リストページ：ポケモンアイコン追加数
#define	ZKN2_POKEICON_ADD_MAX		( ZKN2_POKEICON_PUT_MAX + ZKN2_POKEICON_PUT_H_MAX )
// リストページ：ポケモンアイコン選択数
#define	ZKN2_POKEICON_SEL_MAX		( ZKN2_POKEICON_PUT_H_MAX * ZKN2_POKEICON_SEL_V_MAX )
#define	ZKN2_POKEICON_CGX_SIZE		( 0x20 * 4 * 4 )	// ポケモンアイコンのキャラサイズ

#define	ZKN2_SEQ_WORK_SIZ	( 16 )	// シーケンスワークサイズ

#define ZKN2_POKELIST_PUT_MAX	( MONSNO_END+ZKN2_POKEICON_PUT_MAX )	// 配置データ数（予備で１スクロール分＋）

#define	ZKN2_HW_DOT_MAX		( 152 )		// 検索画面の高さ重さ選択ドット数

#define	ZKN2MAIN_DETAIL_FORM_SIZE	( 32 )	// 詳細フォルムテーブルサイズ

#define	ZKN2MAIN_ENC_POS_OBJ_MAX	( 50 )	// 分布で表示する場所ＯＢＪの数（５０もあれば足りる）

// OBJ ID
enum {
	// トップ・リスト画面
	ZKN2_OBJ_SWITCH = 0,
	ZKN2_OBJ_BAR,
	ZKN2_OBJ_ARROW_U,
	ZKN2_OBJ_ARROW_D,
	ZKN2_OBJ_RAIL,
	ZKN2_OBJ_CURSOR,
	ZKN2_OBJ_ARROW_L,
	ZKN2_OBJ_ARROW_R,
	ZKN2_OBJ_LANGICON_M,
	ZKN2_OBJ_BALL_S,
	ZKN2_OBJ_NAZOPOKE_S,
	ZKN2_OBJ_POKEGRA1,
	ZKN2_OBJ_POKEGRA2,
	ZKN2_OBJ_POKEFOOT,
	ZKN2_OBJ_TYPEICON1,
	ZKN2_OBJ_TYPEICON2,
	ZKN2_OBJ_TYPEICON3,
	ZKN2_OBJ_TYPEICON4,
	ZKN2_OBJ_LANGICON1,
	ZKN2_OBJ_LANGICON2,
	ZKN2_OBJ_LANGICON3,
	ZKN2_OBJ_LANGICON4,
	ZKN2_OBJ_LANGICON5,
	ZKN2_OBJ_LANGICON6,
	ZKN2_OBJ_POKEICON,
	ZKN2_OBJ_LISTPAGE_MAX = ZKN2_OBJ_POKEICON + (ZKN2_POKEICON_ADD_MAX*2) + 1,

	// 検索画面
	ZKN2_OBJ_SEARCH_CURSOR = 0,		// カーソル
	ZKN2_OBJ_SEARCH_MAX_LA,
	ZKN2_OBJ_SEARCH_MAX_RA,
	ZKN2_OBJ_SEARCH_MIN_LA,
	ZKN2_OBJ_SEARCH_MIN_RA,
	ZKN2_OBJ_SEARCH_MAX_CUR,
	ZKN2_OBJ_SEARCH_MAX_NUM1,
	ZKN2_OBJ_SEARCH_MAX_NUM2,
	ZKN2_OBJ_SEARCH_MAX_NUM3,
	ZKN2_OBJ_SEARCH_MAX_NUM4,
	ZKN2_OBJ_SEARCH_MIN_CUR,
	ZKN2_OBJ_SEARCH_MIN_NUM1,
	ZKN2_OBJ_SEARCH_MIN_NUM2,
	ZKN2_OBJ_SEARCH_MIN_NUM3,
	ZKN2_OBJ_SEARCH_MIN_NUM4,
	ZKN2_OBJ_SEARCH_SWITCH,
	ZKN2_OBJ_SEARCH_BAR,
	ZKN2_OBJ_SEARCH_ARROW_U,
	ZKN2_OBJ_SEARCH_ARROW_D,
	ZKN2_OBJ_SEARCH_RAIL,
	ZKN2_OBJ_SEARCH_ARROW_L,
	ZKN2_OBJ_SEARCH_ARROW_R,
	ZKN2_OBJ_SEARCH_LANGICON_M,
	ZKN2_OBJ_SEARCH_LISTICON,
	ZKN2_OBJ_SEARCH_YADON,
	ZKN2_OBJ_SEARCH_GAGE,
	ZKN2_OBJ_SEARCH_FORM_SEL,
	ZKN2_OBJ_SEARCH_FORM_00,
	ZKN2_OBJ_SEARCH_FORM_01,
	ZKN2_OBJ_SEARCH_FORM_02,
	ZKN2_OBJ_SEARCH_FORM_03,
	ZKN2_OBJ_SEARCH_FORM_04,
	ZKN2_OBJ_SEARCH_FORM_05,
	ZKN2_OBJ_SEARCH_FORM_06,
	ZKN2_OBJ_SEARCH_FORM_07,
	ZKN2_OBJ_SEARCH_FORM_08,
	ZKN2_OBJ_SEARCH_FORM_09,
	ZKN2_OBJ_SEARCH_FORM_10,
	ZKN2_OBJ_SEARCH_FORM_11,
	ZKN2_OBJ_SEARCH_FORM_12,
	ZKN2_OBJ_SEARCH_FORM_13,
	ZKN2_OBJ_SEARCH_FORM_SUB,
	ZKN2_OBJ_SEARCH_BALL_S,
	ZKN2_OBJ_SEARCH_NAZOPOKE_S,
	ZKN2_OBJ_SEARCH_POKEGRA,
	ZKN2_OBJ_SEARCH_POKEGRA2,
	ZKN2_OBJ_SEARCH_POKEFOOT,
	ZKN2_OBJ_SEARCH_TYPEICON1,
	ZKN2_OBJ_SEARCH_TYPEICON2,
	ZKN2_OBJ_SEARCH_TYPEICON3,
	ZKN2_OBJ_SEARCH_TYPEICON4,
	ZKN2_OBJ_SEARCH_LANGICON1,
	ZKN2_OBJ_SEARCH_LANGICON2,
	ZKN2_OBJ_SEARCH_LANGICON3,
	ZKN2_OBJ_SEARCH_LANGICON4,
	ZKN2_OBJ_SEARCH_LANGICON5,
	ZKN2_OBJ_SEARCH_LANGICON6,

	ZKN2_OBJ_SEARCH_POKEICON,
	ZKN2_OBJ_SEARCH_MAX = ZKN2_OBJ_SEARCH_POKEICON + (ZKN2_POKEICON_ADD_MAX*2) + 1,

	// 詳細画面共通
	ZKN2_OBJ_DETAIL_CURSOR = 0,
	// 詳細画面・分布
	ZKN2_OBJ_ENC_POKEICON = ZKN2_OBJ_DETAIL_CURSOR + 1,
	ZKN2_OBJ_ENC_FACE,
	ZKN2_OBJ_ENC_TIME,
	ZKN2_OBJ_ENC_TIME_CURSOR,
	ZKN2_OBJ_ENC_BAR,
	ZKN2_OBJ_ENC_ARROW_U,
	ZKN2_OBJ_ENC_ARROW_D,
	ZKN2_OBJ_ENC_RAIL,
	ZKN2_OBJ_ENC_POS,
	ZKN2_OBJ_ENC_MAX = ZKN2_OBJ_ENC_POS + ZKN2MAIN_ENC_POS_OBJ_MAX,
	// 詳細画面・大きさ
	ZKN2_OBJ_SIZE_SILHOUETTE = ZKN2_OBJ_DETAIL_CURSOR + 1,
	ZKN2_OBJ_SIZE_POKEICON_M,
	ZKN2_OBJ_SIZE_POKEICON_S,
	ZKN2_OBJ_SIZE_MYICON_M,
	ZKN2_OBJ_SIZE_MYICON_S,
	ZKN2_OBJ_SIZE_BASE,
	ZKN2_OBJ_SIZE_BOARD,
	ZKN2_OBJ_SIZE_DISH_L,
	ZKN2_OBJ_SIZE_DISH_R,
	ZKN2_OBJ_SIZE_MAX,
	// 詳細画面・姿
	ZKN2_OBJ_FORM_POKEGRA1 = ZKN2_OBJ_DETAIL_CURSOR + 1,
	ZKN2_OBJ_FORM_POKEGRA2,
	ZKN2_OBJ_FORM_POKEGRA3,
	ZKN2_OBJ_FORM_POKEGRA4,
	ZKN2_OBJ_FORM_BAR,
	ZKN2_OBJ_FORM_ARROW_U,
	ZKN2_OBJ_FORM_ARROW_D,
	ZKN2_OBJ_FORM_RAIL,
	ZKN2_OBJ_FORM_ARROW_LU,
	ZKN2_OBJ_FORM_ARROW_LD,
	ZKN2_OBJ_FORM_ARROW_RU,
	ZKN2_OBJ_FORM_ARROW_RD,
	ZKN2_OBJ_FORM_CURSOR,
	ZKN2_OBJ_FORM_POKEICON1,
	ZKN2_OBJ_FORM_POKEICON2,
	ZKN2_OBJ_FORM_POKEICON3,
	ZKN2_OBJ_FORM_POKEICON4,
	ZKN2_OBJ_FORM_POKEICON5,
	ZKN2_OBJ_FORM_POKEICON6,
	ZKN2_OBJ_FORM_MAX,

	ZKN2_OBJ_MAX = ZKN2_OBJ_SEARCH_MAX,
};

// BGWINFRM ID
enum {
	ZKN2_BGWF_BTN_TOP = 0,		// トップページのボタン
	ZKN2_BGWF_BTN_LIST,			// リストページのボタン

	ZKN2_BGWF_LOGO_JOHTO,		// カバーの文字「ジョウト」
	ZKN2_BGWF_LOGO_ZENKOKU,		// カバーの文字「ぜんこく」

	ZKN2_BGWF_LABEL_LIST,		// リストページ下画面ポケモン名など
	ZKN2_BGWF_LIST_BG,			// リスト背景

	ZKN2_BGWF_BTN_SEARCH_TOP,	// 検索画面トップのボタン
	ZKN2_BGWF_BTN_SEARCH_INPUT,	// 検索画面入力ボタン
	ZKN2_BGWF_BTN_SEARCH_LIST,	// 検索画面リストのボタン

	ZKN2_BGWF_SEARCH_BG_D1,		// 検索条件下ＢＧ１
	ZKN2_BGWF_SEARCH_BG_D2,		// 検索条件下ＢＧ２
	ZKN2_BGWF_SEARCH_BG_U1,		// 検索条件上ＢＧ１
	ZKN2_BGWF_SEARCH_BG_U2,		// 検索条件上ＢＧ２

	ZKN2_BGWF_SEARCH_COVER_U,	// 検索画面上カバー
	ZKN2_BGWF_SEARCH_COVER_H,	// 検索画面下カバー（ハンドル）
	ZKN2_BGWF_SEARCH_COVER_D,	// 検索画面下カバー

	ZKN2_BGWF_BTN_DETAIL,		// 詳細画面ボタン

	ZKN2_BGWF_DETAIL_LIST1,		// 詳細画面リスト１
	ZKN2_BGWF_DETAIL_LIST2,		// 詳細画面リスト２
	ZKN2_BGWF_DETAIL_LIST3,		// 詳細画面リスト３
	ZKN2_BGWF_DETAIL_LIST4,		// 詳細画面リスト４
	ZKN2_BGWF_DETAIL_LIST5,		// 詳細画面リスト５
	ZKN2_BGWF_DETAIL_LIST6,		// 詳細画面リスト６

	ZKN2_BGWF_ENCOUNT_WIN,		// 詳細・分布ウィンドウ

	ZKN2_BGWF_MAX,
};

// BMPWIN ID
enum {
	ZKN2_BMPWIN_TOP_SEE = 0,	// トップページ：「みつけた　かず」
	ZKN2_BMPWIN_TOP_GET,		// トップページ：「つかまえた　かず」
	ZKN2_BMPWIN_TOP_SNUM1,		// トップページ：発見数
	ZKN2_BMPWIN_TOP_SNUM2,		// トップページ：発見数
	ZKN2_BMPWIN_TOP_GNUM1,		// トップページ：捕獲数
	ZKN2_BMPWIN_TOP_GNUM2,		// トップページ：捕獲数
	ZKN2_BMPWIN_LIST_POKE,		// リストページ：ポケモン名
	ZKN2_BMPWIN_LIST_U_TITLE,	// リストページ：上画面・タイトル
	ZKN2_BMPWIN_LIST_U_NUM,		// リストページ：上画面・ポケモン番号
	ZKN2_BMPWIN_LIST_U_POKE,	// リストページ：上画面・ポケモン名
	ZKN2_BMPWIN_LIST_U_TYPE,	// リストページ：上画面・ポケモン種類
	ZKN2_BMPWIN_LIST_U_INFO,	// リストページ：上画面・説明
	ZKN2_BMPWIN_LIST_U_HEIGHT,	// リストページ：上画面・高さ
	ZKN2_BMPWIN_LIST_U_H_NUM,	// リストページ：上画面・高さの数値
	ZKN2_BMPWIN_LIST_U_WEIGHT,	// リストページ：上画面・重さ
	ZKN2_BMPWIN_LIST_U_W_NUM,	// リストページ：上画面・重さの数値
	ZKN2_BMPWIN_LIST_U_LANG_L,	// リストページ：上画面・外国語タイトル
	ZKN2_BMPWIN_LIST_U_LANG_I,	// リストページ：上画面・外国語番号
	ZKN2_BMPWIN_LIST_U_LANG_N,	// リストページ：上画面・外国語名
	ZKN2_BMPWIN_LIST_U_LANG_T,	// リストページ：上画面・外国語種類
	ZKN2_BMPWIN_TOP_MAX,

	ZKN2_BMPWIN_SEARCH_U_INFO = 0,	// 検索ページ：上画面：説明
	ZKN2_BMPWIN_SEARCH_U_ROW,		// 検索ページ：上画面：「ならびじゅん」
	ZKN2_BMPWIN_SEARCH_U_NAME_T,	// 検索ページ：上画面：「なまえ」
	ZKN2_BMPWIN_SEARCH_U_TYPE_T,	// 検索ページ：上画面：「タイプ」
	ZKN2_BMPWIN_SEARCH_U_HI_T,		// 検索ページ：上画面：「たかさ」
	ZKN2_BMPWIN_SEARCH_U_WT_T,		// 検索ページ：上画面：「おもさ」
	ZKN2_BMPWIN_SEARCH_U_AREA_T,	// 検索ページ：上画面：「ちいき」
	ZKN2_BMPWIN_SEARCH_U_FORM_T,	// 検索ページ：上画面：「かたち」
	ZKN2_BMPWIN_SEARCH_U_ROW_P,		// 検索ページ：上画面：並び順
	ZKN2_BMPWIN_SEARCH_U_NAME_P,	// 検索ページ：上画面：名前
	ZKN2_BMPWIN_SEARCH_U_TYPE1_P,	// 検索ページ：上画面：タイプ１
	ZKN2_BMPWIN_SEARCH_U_TYPE2_P,	// 検索ページ：上画面：タイプ２
	ZKN2_BMPWIN_SEARCH_U_HL_P,		// 検索ページ：上画面：高さ（低）
	ZKN2_BMPWIN_SEARCH_U_HH_P,		// 検索ページ：上画面：高さ（高）
	ZKN2_BMPWIN_SEARCH_U_WL_P,		// 検索ページ：上画面：重さ（低）
	ZKN2_BMPWIN_SEARCH_U_WH_P,		// 検索ページ：上画面：重さ（高）
	ZKN2_BMPWIN_SEARCH_U_AREA_P,	// 検索ページ：上画面：地域
	ZKN2_BMPWIN_SEARCH_L_BUTTON,	// 検索ページ：下画面：左ボタン
	ZKN2_BMPWIN_SEARCH_C_BUTTON,	// 検索ページ：下画面：中ボタン
	ZKN2_BMPWIN_SEARCH_R_BUTTON,	// 検索ページ：下画面：右ボタン
	ZKN2_BMPWIN_SEARCH_D_ROW,		// 検索ページ：下画面：「ならびじゅん」
	ZKN2_BMPWIN_SEARCH_D_NAME_T,	// 検索ページ：下画面：「なまえ」
	ZKN2_BMPWIN_SEARCH_D_TYPE_T,	// 検索ページ：下画面：「タイプ」
	ZKN2_BMPWIN_SEARCH_D_HI_T,		// 検索ページ：下画面：「たかさ」
	ZKN2_BMPWIN_SEARCH_D_WT_T,		// 検索ページ：下画面：「おもさ」
	ZKN2_BMPWIN_SEARCH_D_AREA_T,	// 検索ページ：下画面：「ちいき」
	ZKN2_BMPWIN_SEARCH_D_FORM_T,	// 検索ページ：下画面：「かたち」
	ZKN2_BMPWIN_SEARCH_D_ROW_P,		// 検索ページ：下画面：並び順
	ZKN2_BMPWIN_SEARCH_D_NAME_P,	// 検索ページ：下画面：名前
	ZKN2_BMPWIN_SEARCH_D_TYPE1_P,	// 検索ページ：下画面：タイプ１
	ZKN2_BMPWIN_SEARCH_D_TYPE2_P,	// 検索ページ：下画面：タイプ２
	ZKN2_BMPWIN_SEARCH_D_HL_P,		// 検索ページ：下画面：高さ（低）
	ZKN2_BMPWIN_SEARCH_D_HH_P,		// 検索ページ：下画面：高さ（高）
	ZKN2_BMPWIN_SEARCH_D_WL_P,		// 検索ページ：下画面：重さ（低）
	ZKN2_BMPWIN_SEARCH_D_WH_P,		// 検索ページ：下画面：重さ（高）
	ZKN2_BMPWIN_SEARCH_D_AREA_P,	// 検索ページ：下画面：地域
	ZKN2_BMPWIN_SEARCH_ROW_TITLE,	// 検索ページ・並び順選択：「ならびじゅん」
	ZKN2_BMPWIN_SEARCH_ROW_MODE,	// 検索ページ・並び順選択：現在のモード
	ZKN2_BMPWIN_SEARCH_ROW_NUM,		// 検索ページ・並び順選択：「ばんごう」
	ZKN2_BMPWIN_SEARCH_ROW_STR,		// 検索ページ・並び順選択：「ごじゅうおん」
	ZKN2_BMPWIN_SEARCH_ROW_WH,		// 検索ページ・並び順選択：「おもい」
	ZKN2_BMPWIN_SEARCH_ROW_WL,		// 検索ページ・並び順選択：「かるい」
	ZKN2_BMPWIN_SEARCH_ROW_HH,		// 検索ページ・並び順選択：「たかい」
	ZKN2_BMPWIN_SEARCH_ROW_HL,		// 検索ページ・並び順選択：「ひくい」
	ZKN2_BMPWIN_SEARCH_TYPE_TITLE,	// 検索ページ・タイプ選択：「タイプ」
	ZKN2_BMPWIN_SEARCH_TYPE_SEL1,	// 検索ページ・タイプ選択：選択したタイプ１
	ZKN2_BMPWIN_SEARCH_TYPE_SEL2,	// 検索ページ・タイプ選択：選択したタイプ２
	ZKN2_BMPWIN_SEARCH_TYPE_PRM1,	// 検索ページ・タイプ選択：タイプ１
	ZKN2_BMPWIN_SEARCH_TYPE_PRM2,	// 検索ページ・タイプ選択：タイプ２
	ZKN2_BMPWIN_SEARCH_TYPE_PRM3,	// 検索ページ・タイプ選択：タイプ３
	ZKN2_BMPWIN_SEARCH_TYPE_PRM4,	// 検索ページ・タイプ選択：タイプ４
	ZKN2_BMPWIN_SEARCH_TYPE_PRM5,	// 検索ページ・タイプ選択：タイプ５
	ZKN2_BMPWIN_SEARCH_TYPE_PRM6,	// 検索ページ・タイプ選択：タイプ６
	ZKN2_BMPWIN_SEARCH_TYPE_PRM7,	// 検索ページ・タイプ選択：タイプ７
	ZKN2_BMPWIN_SEARCH_TYPE_PRM8,	// 検索ページ・タイプ選択：タイプ８
	ZKN2_BMPWIN_SEARCH_TYPE_PRM9,	// 検索ページ・タイプ選択：タイプ９
	ZKN2_BMPWIN_SEARCH_TYPE_PRM10,	// 検索ページ・タイプ選択：タイプ１０
	ZKN2_BMPWIN_SEARCH_TYPE_PRM11,	// 検索ページ・タイプ選択：タイプ１１
	ZKN2_BMPWIN_SEARCH_TYPE_PRM12,	// 検索ページ・タイプ選択：タイプ１２
	ZKN2_BMPWIN_SEARCH_TYPE_PRM13,	// 検索ページ・タイプ選択：タイプ１３
	ZKN2_BMPWIN_SEARCH_TYPE_PRM14,	// 検索ページ・タイプ選択：タイプ１４
	ZKN2_BMPWIN_SEARCH_TYPE_PRM15,	// 検索ページ・タイプ選択：タイプ１５
	ZKN2_BMPWIN_SEARCH_TYPE_PRM16,	// 検索ページ・タイプ選択：タイプ１６
	ZKN2_BMPWIN_SEARCH_TYPE_PRM17,	// 検索ページ・タイプ選択：タイプ１７
	ZKN2_BMPWIN_SEARCH_TYPE_PRM18,	// 検索ページ・タイプ選択：タイプ１８
	ZKN2_BMPWIN_SEARCH_NAME_TITLE,	// 検索ページ・名前選択：「なまえ」
	ZKN2_BMPWIN_SEARCH_NAME_SEL,	// 検索ページ・名前選択：名前
	ZKN2_BMPWIN_SEARCH_NAME_AREA,	// 検索ページ・名前選択：入力エリア
	ZKN2_BMPWIN_SEARCH_HEIGHT_TITLE,	// 検索ページ・高さ選択：「たかさ」
	ZKN2_BMPWIN_SEARCH_HEIGHT_L,		// 検索ページ・高さ選択：高さ（低）
	ZKN2_BMPWIN_SEARCH_HEIGHT_H,		// 検索ページ・高さ選択：高さ（高）
	ZKN2_BMPWIN_SEARCH_WEIGHT_TITLE,	// 検索ページ・重さ選択：「おもさ」
	ZKN2_BMPWIN_SEARCH_WEIGHT_L,		// 検索ページ・重さ選択：重さ（低）
	ZKN2_BMPWIN_SEARCH_WEIGHT_H,		// 検索ページ・重さ選択：重さ（高）
	ZKN2_BMPWIN_SEARCH_AREA_TITLE,		// 検索ページ・地域選択：「ちいき」
	ZKN2_BMPWIN_SEARCH_AREA_SEL,		// 検索ページ・地域選択：選択した地域
	ZKN2_BMPWIN_SEARCH_AREA_PRM1,		// 検索ページ・地域選択：「ジョウト」
	ZKN2_BMPWIN_SEARCH_AREA_PRM2,		// 検索ページ・地域選択：「カントー」
	ZKN2_BMPWIN_SEARCH_AREA_PRM3,		// 検索ページ・地域選択：「ふめい」
	ZKN2_BMPWIN_SEARCH_AREA_PRM4,		// 検索ページ・地域選択：「−−−−」
	ZKN2_BMPWIN_SEARCH_FORM_TITLE,		// 検索ページ・形選択：「かたち」
	ZKN2_BMPWIN_SEARCH_TITLE,			// 検索ページ：上画面・タイトル
	ZKN2_BMPWIN_SEARCH_NUM,				// 検索ページ：上画面・ポケモン番号
	ZKN2_BMPWIN_SEARCH_POKE,			// 検索ページ：上画面・ポケモン名
	ZKN2_BMPWIN_SEARCH_TYPE,			// 検索ページ：上画面・ポケモン種類
	ZKN2_BMPWIN_SEARCH_TEXT,			// 検索ページ：上画面・説明
	ZKN2_BMPWIN_SEARCH_HEIGHT,			// 検索ページ：上画面・高さ
	ZKN2_BMPWIN_SEARCH_H_NUM,			// 検索ページ：上画面・高さの数値
	ZKN2_BMPWIN_SEARCH_WEIGHT,			// 検索ページ：上画面・重さ
	ZKN2_BMPWIN_SEARCH_W_NUM,			// 検索ページ：上画面・重さの数値
	ZKN2_BMPWIN_SEARCH_LANG_L,			// 検索ページ：上画面・外国語タイトル
	ZKN2_BMPWIN_SEARCH_LANG_I,			// 検索ページ：上画面・外国語番号
	ZKN2_BMPWIN_SEARCH_LANG_N,			// 検索ページ：上画面・外国語名
	ZKN2_BMPWIN_SEARCH_LANG_T,			// 検索ページ：上画面・外国語種類
	ZKN2_BMPWIN_SEARCH_LABEL_POKE,		// 検索ページ：ポケモン名
	ZKN2_BMPWIN_SEARCH_SEE,				// 検索ページカバー：「みつけた　かず」
	ZKN2_BMPWIN_SEARCH_GET,				// 検索ページカバー：「つかまえた　かず」
	ZKN2_BMPWIN_SEARCH_SNUM1,			// 検索ページカバー：発見数
	ZKN2_BMPWIN_SEARCH_SNUM2,			// 検索ページカバー：発見数
	ZKN2_BMPWIN_SEARCH_GNUM1,			// 検索ページカバー：捕獲数
	ZKN2_BMPWIN_SEARCH_GNUM2,			// 検索ページカバー：捕獲数
	ZKN2_BMPWIN_SEARCH_MAX,

	ZKN2_BMPWIN_ENC_U_TITLE = 0,	// 詳細・分布ページ：上画面タイトル
	ZKN2_BMPWIN_ENC_U_TIME,			// 詳細・分布ページ：上画面時間帯
	ZKN2_BMPWIN_ENC_U_NAME,			// 詳細・分布ページ：上画面ポケモン名
	ZKN2_BMPWIN_ENC_U_ERROR,		// 詳細・分布ページ：上画面「せいそくち　ふめい」
	ZKN2_BMPWIN_ENC_D_CHANGE,		// 詳細・分布ページ：下画面「きりかえ」
	ZKN2_BMPWIN_ENC_D_JOHTO1,		// 詳細・分布ページ：下画面「ジョウト」（全国図鑑可）
	ZKN2_BMPWIN_ENC_D_JOHTO2,		// 詳細・分布ページ：下画面「ジョウト」（全国図鑑不可）
	ZKN2_BMPWIN_ENC_D_KANTO,		// 詳細・分布ページ：下画面「カントー」
	ZKN2_BMPWIN_ENC_D_LIST1,		// 詳細・分布ページ：下画面地名１
	ZKN2_BMPWIN_ENC_D_LIST2,		// 詳細・分布ページ：下画面地名２
	ZKN2_BMPWIN_ENC_D_LIST3,		// 詳細・分布ページ：下画面地名３
	ZKN2_BMPWIN_ENC_D_LIST4,		// 詳細・分布ページ：下画面地名４
	ZKN2_BMPWIN_ENC_D_LIST5,		// 詳細・分布ページ：下画面地名５
	ZKN2_BMPWIN_ENC_D_LIST6,		// 詳細・分布ページ：下画面地名６
	ZKN2_BMPWIN_ENC_MAX,

	ZKN2_BMPWIN_SIZE_U_TITLE = 0,	// 詳細・大きさページ：上画面タイトル
	ZKN2_BMPWIN_SIZE_U_POKENAME,	// 詳細・大きさページ：上画面ポケモン名
	ZKN2_BMPWIN_SIZE_U_MYNAME,		// 詳細・大きさページ：上画面主人公名
	ZKN2_BMPWIN_SIZE_U_KURABE,		// 詳細・大きさページ：「おおきさくらべ」
	ZKN2_BMPWIN_SIZE_U_POKE_HT,		// 詳細・大きさページ：ポケモン「たかさ」
	ZKN2_BMPWIN_SIZE_U_POKE_HP,		// 詳細・大きさページ：ポケモン高さ
	ZKN2_BMPWIN_SIZE_U_MY_HT,		// 詳細・大きさページ：自分「高さ」
	ZKN2_BMPWIN_SIZE_U_MY_HP,		// 詳細・大きさページ：自分高さ
	ZKN2_BMPWIN_SIZE_D_KURABE,		// 詳細・大きさページ：下画面「おもさ　くらべ」
	ZKN2_BMPWIN_SIZE_D_POKE_WT,		// 詳細・大きさページ：下画面ポケモン「おもさ」
	ZKN2_BMPWIN_SIZE_D_POKE_WP,		// 詳細・大きさページ：ポケモンの重さ
	ZKN2_BMPWIN_SIZE_D_MY_WT,		// 詳細・大きさページ：下画面主人公「おもさ」
	ZKN2_BMPWIN_SIZE_D_MY_WP,		// 詳細・大きさページ：下画面主人公の重さ
	ZKN2_BMPWIN_SIZE_MAX,

	ZKN2_BMPWIN_FORM_U_TITLE = 0,	// 詳細・姿ページ：上画面タイトル
	ZKN2_BMPWIN_FORM_U_NAME,		// 詳細・姿ページ：上画面名前
	ZKN2_BMPWIN_FORM_U_FORM,		// 詳細・姿ページ：上画面フォルム名
	ZKN2_BMPWIN_FORM_U_KURABERU,	// 詳細・姿ページ：上画面「〜を　みくらべる」
	ZKN2_BMPWIN_FORM_D_KURABERU,	// 詳細・姿ページ：下画面「みくらべる」
	ZKN2_BMPWIN_FORM_D_SUGATA,		// 詳細・姿ページ：下画面「すがた」
	ZKN2_BMPWIN_FORM_D_FORM_L,		// 詳細・姿ページ：下画面フォルム名・左
	ZKN2_BMPWIN_FORM_D_FORM_R,		// 詳細・姿ページ：下画面フォルム名・右
	ZKN2_BMPWIN_FORM_D_CHANGE,		// 詳細・姿ページ：下画面「きりかえる」
	ZKN2_BMPWIN_FORM_D_RET,			// 詳細・姿ページ：下画面「もどる」
	ZKN2_BMPWIN_FORM_D_FORM1,		// 詳細・姿ページ：下画面フォルム名１
	ZKN2_BMPWIN_FORM_D_FORM2,		// 詳細・姿ページ：下画面フォルム名２
	ZKN2_BMPWIN_FORM_D_FORM3,		// 詳細・姿ページ：下画面フォルム名３
	ZKN2_BMPWIN_FORM_D_FORM4,		// 詳細・姿ページ：下画面フォルム名４
	ZKN2_BMPWIN_FORM_D_FORM5,		// 詳細・姿ページ：下画面フォルム名５
	ZKN2_BMPWIN_FORM_D_FORM6,		// 詳細・姿ページ：下画面フォルム名６
	ZKN2_BMPWIN_FORM_MAX,

	ZKN2_BMPWIN_DRET_U_TITLE = 0,	// 詳細・戻るページ：上画面タイトル
	ZKN2_BMPWIN_DRET_D_END,			// 詳細・戻るページ：下画面「戻る」
	ZKN2_BMPWIN_DRET_MAX,

	ZKN2_BMPWIN_MAX = ZKN2_BMPWIN_SEARCH_MAX
};

// 検索パラメータ
enum{
	ZKN2_SEARCH_PRM_ROW = 0,		// 並び順
	ZKN2_SEARCH_PRM_NAME,			// 名前
	ZKN2_SEARCH_PRM_TYPE1,			// タイプ１
	ZKN2_SEARCH_PRM_TYPE2,			// タイプ２
	ZKN2_SEARCH_PRM_HEIGHT_L,		// 高さ（低）
	ZKN2_SEARCH_PRM_HEIGHT_H,		// 高さ（高）
	ZKN2_SEARCH_PRM_WEIGHT_L,		// 重さ（低）
	ZKN2_SEARCH_PRM_WEIGHT_H,		// 重さ（高）
	ZKN2_SEARCH_PRM_AREA,			// 地域
	ZKN2_SEARCH_PRM_FORM,			// 形
	ZKN2_SEARCH_PRM_MAX
};

// ポケモンデータ
typedef struct {
	u16	mons;	// ポケモン番号
	u16	type;	// 登録状況
}ZKN2_POKE_DATA;

// リストデータ
typedef struct {
	ZKN2_POKE_DATA dat[ZKN2_POKELIST_TBL_MAX];	// ポケモンデータ
	u16	see_num;		// 見つけた数
	u16	get_num;		// 捕まえた数
}ZKN2_LIST;

// 高さ・重さデータ
typedef struct {
	u16	height;
	u16	weight;
}ZKN2_HW_DATA;

// 大きさ比べ用ワーク
typedef struct {
	s16 * myPos;
	s16 * myScale;

	s16 * pokePos;
	s16 * pokeScale;
}ZKN2_SIZE_WORK;

// エンカウントデータ
typedef struct {
	s32	* map;
	s32	num;
}ZKN2_ENCOUNT_MAP;

typedef struct {
	ZKN2_ENCOUNT_MAP	fld;
	ZKN2_ENCOUNT_MAP	fld_sp;
	ZKN2_ENCOUNT_MAP	dan;
	ZKN2_ENCOUNT_MAP	dan_sp;
	ZKN2_ENCOUNT_MAP	all;
	u32 * all_type;
//	u32	R02_other;		// リストに格納された２番道路以外の２番道路を格納
}ZKN2_ENCOUNT_DATA;

// ダンジョングリッド座標　OAMの種類データ
typedef struct {
	u8	gridx;
	u8	gridy;
	u8	oam_flg;
	u8	dummy;
}ZKN2_ENCOUNT_DATA_DAN_GRID;

// フィールド地形データ
#define ZKN2_RANGEDATA_FLD_GRID_ARRY_SIZE	( 32 )
typedef struct {
	u8	gridx;
	u8	gridy;
	u8	sizex;
	u8	sizey;
	u8	arry[ZKN2_RANGEDATA_FLD_GRID_ARRY_SIZE];
}ZKN2_ENCOUNT_DATA_FLD_GRID;




// 図鑑画面ワーク
typedef struct {
	ZUKAN_DATA * dat;		// 外部設定データ

	GF_BGL_INI * bgl;		// BGLデータ

	// ＢＧウィンドウフレーム
	BGWINFRM_WORK * wfrm;

	// BMPWIN
	GF_BGL_BMPWIN	win[ZKN2_BMPWIN_MAX];

	// メッセージ関連
//	NUMFONT * nfnt;				// 8x8フォント
	MSGDATA_MANAGER * mman;		// メッセージデータマネージャ
	WORDSET * wset;				// 単語セット
	STRBUF * expbuf;			// メッセージ展開領域

	// OBJ関連
	CATS_SYS_PTR	csp;
	CATS_RES_PTR	crp;
	CATS_ACT_PTR	cap[ZKN2_OBJ_MAX];


	PALETTE_FADE_PTR	pfd;	// パレットフェードデータ

	// 図鑑グラフィック
	ARCHANDLE * graphic_ah;
	// ポケモンアイコン
	ARCHANDLE * pokeicon_ah;

	// シーケンス関連
	int	next_seq;			// 遷移用シーケンス（汎用）
	int	wipe_seq;			// 遷移用シーケンス（ワイプ専用）
//	u16	wait;				// ウェイト
//	u8	trg_wait_mode;		// トリガーウェイト終了モード
	u32	ui_flg;				// キーかタッチか 0 = TOUCH, 1 = KEY
	u8	seq_work[ZKN2_SEQ_WORK_SIZ];		// シーケンスワーク

	// 図鑑画面データ
	ZKN2_LIST mons_list;	// リストデータ
	ZKN2_POKE_DATA list_put[ZKN2_POKELIST_PUT_MAX];	// リスト表示用データ
	int * mons_height;				// ポケモンの高さデータ
	int * mons_weight;				// ポケモンの重さデータ
	ZKN2_HW_DATA * hw_dot;			// 検索画面のドットテーブル
	u8 * area_dat;					// 検索画面地域データ
	u8	zkn_mode;			// 図鑑モード
	u8	list_scr;			// リストスクロールカウンタ
	u8	list_pos;			// リスト位置
	u8	page;				// ページ
	u8	lang;				// 表示言語番号
	u8	num_swap;			// 捕獲・発見数を書き込むＢＭＰのスワップフラグ
	u8	icon_swap;			// ポケモンアイコンスワップフラグ
	u8	pokegra_swap:4;		// ポケモングラフィックスワップフラグ
	u8	type_swap:4;		// タイプアイコンスワップフラグ
	BOOL zenkoku_mode;		// 全国図鑑が利用できるか
	CURSOR_MOVE_WORK * cmwk;	// カーソル移動ワーク
	u32	search_prm[ZKN2_SEARCH_PRM_MAX];	// 検索パラメータ
	u32	search_cpy[2];						// 検索パラメータ（コピー）
	u32	search_pri_flg;						// 検索ＢＧプライオリティ変更フラグ
	int	search_pos;							// 検索カーソル位置（ループ処理用）

	u8	detail_ret;			// 詳細画面からの戻り先
	u8	detail_page;		// 表示中の詳細ページ
	u16	detail_mons;		// 詳細を表示するポケモン

	u8	detail_form[ZKN2MAIN_DETAIL_FORM_SIZE];	// フォルムテーブル

	s8	detail_form_max;
	s8	detail_form_pos;
	s8	detail_form_pos2;
	u8	detail_form2_cursor:5;
	u8	detail_form_swap:1;
	u8	detail_form_swap2:1;
	u8	detail_form_dir:1;

	s8	detail_place_mode;		// 0 = ジョウト、1 = カントー
	s8	detail_place_time;		// 時間帯
	s8	detail_place_pos;		// リスト選択位置
//	s8	detail_place_max;		// リスト数
	u8	detail_place_alpha:6;
	u8	detail_place_put_flg:1;
	u8	detail_place_put_switch:1;

	ZKN2_SIZE_WORK	size_work;

	ZKN2_ENCOUNT_DATA	enc_data;
	ZKN2_ENCOUNT_DATA_DAN_GRID * dan_grid;
	ZKN2_ENCOUNT_DATA_FLD_GRID * fld_grid;

}ZKN2_WORK;

typedef int (*pZkn2Func)(ZKN2_WORK*);

// ページ
enum {
	ZKN_PAGE_LIST = 0,	// トップ/リスト
	ZKN_PAGE_PLACE,		// 詳細：分布
	ZKN_PAGE_SIZE,		// 詳細：大きさ
	ZKN_PAGE_FORM,		// 詳細：姿
	ZKN_PAGE_RETURN,	// 詳細：戻る
	ZKN_PAGE_SEARCH,	// 検索
};

// 検索ページ：初期化定義
enum {
	ZKN2MAIN_SEARCHINIT_MAIN = 0,	// メイン
	ZKN2MAIN_SEARCHINIT_ROW,		// 並び順
	ZKN2MAIN_SEARCHINIT_NAME,		// 名前
	ZKN2MAIN_SEARCHINIT_TYPE,		// タイプ
	ZKN2MAIN_SEARCHINIT_HEIGHT,		// 高さ
	ZKN2MAIN_SEARCHINIT_WEIGHT,		// 重さ
	ZKN2MAIN_SEARCHINIT_AREA,		// 地域
	ZKN2MAIN_SEARCHINIT_FORM,		// 形
};

// 詳細フォルムデータ
enum {
	ZKN2MAIN_FORM_NONE = 0,			// なし
	ZKN2MAIN_FORM_MALE,				// ♂
	ZKN2MAIN_FORM_FAMALE,			// ♀
	ZKN2MAIN_FORM_SEX_UNKNOWN,		// 性別不明
	ZKN2MAIN_FORM_EXTRA = 0x80,		// その他のフォルム
};


#define	ZKN2_ENC_ALL_AREA	( 0xfffffffe )		// 分布ＩＤ「全域」


//============================================================================================
//	プロトタイプ宣言
//============================================================================================

//--------------------------------------------------------------------------------------------
/**
 * VBLANK関数
 *
 * @param	work	図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_VBlank( void * work );

//--------------------------------------------------------------------------------------------
/**
 * VRAM設定
 *
 * @param	none
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_VramBankSet(void);

//--------------------------------------------------------------------------------------------
/**
 * ＢＧ初期化
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_BgInit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面：大きさページ用ＢＧ切り替え
 *
 * @param	wk		図鑑画面ワーク
 * @param	flg		切り替えフラグ ( TRUE = 大きさページ )
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SizePageBgChange( ZKN2_WORK * wk, BOOL flg );

//--------------------------------------------------------------------------------------------
/**
 * ＢＧ解放
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_BgExit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * ＢＧプライオリティ変更：トップ・リスト画面
 *
 * @param	none
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_TopListBgPriority(void);

//--------------------------------------------------------------------------------------------
/**
 * ＢＧプライオリティ変更：検索画面
 *
 * @param	none
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchBgPriority(void);

//--------------------------------------------------------------------------------------------
/**
 * ＢＧプライオリティ変更：詳細画面姿ページ
 *
 * @param	none
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_DetailBgPriority(void);

//--------------------------------------------------------------------------------------------
/**
 * ＢＧプライオリティ変更：詳細画面分布ページ
 *
 * @param	none
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_PlaceBgPriority(void);

//--------------------------------------------------------------------------------------------
/**
 * ＢＧプライオリティ変更：詳細画面大きさページ
 *
 * @param	none
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SizeBgPriority(void);

//--------------------------------------------------------------------------------------------
/**
 * ＢＧプライオリティ変更：詳細画面「戻る」ページ
 *
 * @param	none
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_DetailRetBgPriority(void);

//--------------------------------------------------------------------------------------------
/**
 * ＢＧスクリーンクリア
 *
 * @param	wk		図鑑画面ワーク
 * @param	frm		ＢＧフレーム
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_BgScrClear( ZKN2_WORK * wk, u8 frm );

//--------------------------------------------------------------------------------------------
/**
 * 半透明設定
 *
 * @param	none
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SetBlendAlpha(void);

//--------------------------------------------------------------------------------------------
/**
 * 分布用半透明設定
 *
 * @param	ev1		第１対象面のブレンド係数
 * @param	ev2		第２対象面のブレンド係数
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_EncountDataChgSetBlendAlpha( u8 ev1, u8 ev2 );

//--------------------------------------------------------------------------------------------
/**
 * パレットフェード初期化
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_PaletteFadeInit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * パレットフェード解放
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_PaletteFadeExit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * メッセージ関連初期化
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_MsgInit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * メッセージ関連解放
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_MsgExit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索データ読み込み
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchDataLoad( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 高さ・重さデータ解放
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchDataFree( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * ＢＧウィンドウフレーム作成
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_BgWinFrmInit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * ＢＧウィンドウフレーム削除
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_BgWinFrmExit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * トップボタン・フレームイン開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_TopButtonInStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * トップボタン・フレームアウト開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_TopButtonOutStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * リストラベル表示
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ListLabelPut( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * リストボタン・フレームイン開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ListButtonInStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * リストボタン・フレームアウト開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ListButtonOutStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索トップボタン・フレームイン開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchTopButtonInStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索トップボタン・フレームアウト開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchTopButtonOutStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索入力ボタン・フレームイン開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchInputButtonInStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索入力ボタン・フレームアウト開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchInputButtonOutStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索リストボタン・フレームイン開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchListButtonInStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索リストボタン・フレームアウト開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchListButtonOutStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面ボタン・フレームイン開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_DetailButtonInStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面ボタン・フレームアウト開始
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_DetailButtonOutStart( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面のボタンパレット変更
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_DetailButtonPalChange( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面分布ページの「せいそくちふめい」表示
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_EncountWinPut( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面分布ページの「せいそくちふめい」非表示
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_EncountWinOff( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * ページごとの初期化処理
 *
 * @param	wk		図鑑画面ワーク
 * @param	page	ページ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_PageInit( ZKN2_WORK * wk, u32 page );

//--------------------------------------------------------------------------------------------
/**
 * 図鑑タイトル表示
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ZukanNamePut( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * リストページ：グリッドＢＧスクリーン作成
 *
 * @param	wk		図鑑画面ワーク
 * @param	start	開始図鑑番号
 *
 * @return	作成したバッファ
 */
//--------------------------------------------------------------------------------------------
extern u16 * ZKN2MAIN_ListBgScreenMake( ZKN2_WORK * wk, u32 start );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面のリスト：グリッドＢＧスクリーン作成
 *
 * @param	wk		図鑑画面ワーク
 * @param	start	開始図鑑番号
 *
 * @return	作成したバッファ
 */
//--------------------------------------------------------------------------------------------
extern u16 * ZKN2MAIN_SearchListBgScreenMake( ZKN2_WORK * wk, u32 start );

//--------------------------------------------------------------------------------------------
/**
 * リストページ：グリッドＢＧスクリーン解放
 *
 * @param	scrn	スクリーンバッファ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ListBgScreenExit( u16 * scrn );

//--------------------------------------------------------------------------------------------
/**
 * リストページ：現在のグリッドＢＧスクリーンをセット
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ListBgSet( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面のリスト：現在のグリッドＢＧスクリーンをセット
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchListBgSet( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * リストページ：グリッドＢＧスクリーンを配置
 *
 * @param	wk		図鑑画面ワーク
 * @param	scrn	スクリーンバッファ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ListBgScrollPut( ZKN2_WORK * wk, u16 * scrn );

//--------------------------------------------------------------------------------------------
/**
 * 指定言語を表示できるかチェック
 *
 * @param	wk		図鑑画面ワーク
 * @param	mons	ポケモン番号
 * @param	lang	言語
 *
 * @retval	"TRUE = 可"
 * @retval	"FALSE = 不可"
 */
//--------------------------------------------------------------------------------------------
extern BOOL ZKN2MAIN_LangCheck( ZKN2_WORK * wk, u16 mons, u16 lang );

//--------------------------------------------------------------------------------------------
/**
 * 母国語以外を表示できるかチェック
 *
 * @param	wk		図鑑画面ワーク
 * @param	mons	ポケモン番号
 *
 * @retval	"TRUE = 可"
 * @retval	"FALSE = 不可"
 */
//--------------------------------------------------------------------------------------------
extern BOOL ZKN2MAIN_LangChangeCheck( ZKN2_WORK * wk, u16 mons );

//--------------------------------------------------------------------------------------------
/**
 * リストページ：言語切り替え
 *
 * @param	wk		図鑑画面ワーク
 * @param	mons	ポケモン番号
 * @param	mv		切り替え方向
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_LangChange( ZKN2_WORK * wk, u16 mons, s16 mv );

//--------------------------------------------------------------------------------------------
/**
 * リストページ：選択ポケモン情報表示
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ListSelPosInfoPut( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * リストページ：上画面ＢＧ切り替え
 *
 * @param	bgl		BGL
 * @param	bgfrm	ＢＧフレーム
 * @param	lang	言語
 * @param	ah		アークハンドル
 * @param	heapID	ヒープＩＤ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_PokeInfoBgPut(
				GF_BGL_INI * bgl, u8 bgfrm, u8 lang, ARCHANDLE * ah, u32 heapID );

//--------------------------------------------------------------------------------------------
/**
 * リストページ：登録数以上のときの上画面ＢＧ
 *
 * @param	bgl		BGL
 * @param	bgfrm	ＢＧフレーム
 * @param	ah		アークハンドル
 * @param	heapID	ヒープＩＤ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_PokeInfoBgPutMax(
				GF_BGL_INI * bgl, u8 bgfrm, ARCHANDLE * ah, u32 heapID );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面各ページの初期化
 *
 * @param	wk		図鑑画面ワーク
 * @param	mode	ページ
 * @param	pos		カーソル位置
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchInputInit( ZKN2_WORK * wk, u32 mode, u32 pos );

//--------------------------------------------------------------------------------------------
/**
 * 検索条件初期化
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchParamInit( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面並び順選択切り替え
 *
 * @param	wk		図鑑画面ワーク
 * @param	num		選択位置
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchRowSelect( ZKN2_WORK * wk, u32 num );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面タイプ選択切り替え
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchTypeSelect( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面地域選択切り替え
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchAreaSelect( ZKN2_WORK * wk, u32 num );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面姿選択切り替え
 *
 * @param	wk		図鑑画面ワーク
 * @param	num		選択位置
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchFormSelect( ZKN2_WORK * wk, u32 num );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面名前選択切り替え
 *
 * @param	wk		図鑑画面ワーク
 * @param	num		選択位置
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchNameSelect( ZKN2_WORK * wk, u32 num );

//--------------------------------------------------------------------------------------------
/**
 * 検索画面：名前番号取得
 *
 * @param	num		選択位置
 *
 * @return	名前番号
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2MAIN_SearchNamePutNumGet( u32 num );

//--------------------------------------------------------------------------------------------
/**
 * カバーのBGWINフレーム作成
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_ListCoverBGWFSet( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索ページ：選択ポケモン情報表示
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchSelPosInfoPut( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 検索ページ：言語切り替え
 *
 * @param	wk		図鑑画面ワーク
 * @param	mons	ポケモン番号
 * @param	mv		切り替え方向
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchLangChange( ZKN2_WORK * wk, u16 mons, s16 mv );

//--------------------------------------------------------------------------------------------
/**
 * 検索結果表示デモ時のサブ画面のマスク処理
 *
 * @param	wk		図鑑画面ワーク
 * @param	flg		フラグ ( TRUE = マスク有効 )
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_SearchSubWindowMask( BOOL flg );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面姿ページ１のＢＧ初期化
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_FormPageBgLoad( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面姿ページ２のＢＧ初期化
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_Form2BgLoad( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 詳細画面フォルムリスト作成
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_DetailFormTblMake( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 高さ・重さデータ読み込み
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_HeightWeightLoad( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 高さ・重さデータ解放
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_HeightWeightFree( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 分布データ作成
 *
 * @param	wk		図鑑画面ワーク
 * @param	time	時間帯
 * @param	mode	地域 ( 0 = ジョウト, 1 = カントー )
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_EncountDataLoad( ZKN2_WORK * wk, u32 time, u32 mode );

//--------------------------------------------------------------------------------------------
/**
 * 分布データ解放
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_EncountDataFree( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 分布リストの位置がフィールドかダンジョンか
 *
 * @param	wk		図鑑画面ワーク
 *
 * @retval	"0 = フィールド"
 * @retval	"1 = ダンジョン"
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2MAIN_EncPosTypeGet( ZKN2_WORK * wk, u32 pos );

//--------------------------------------------------------------------------------------------
/**
 * 分布リストの位置のエンカウントタイプ状況取得
 *
 * @param	wk		図鑑画面ワーク
 * @param	pos		リスト位置
 * @param	type	エンカウントタイプ ( 0 = 通常, 1 = 特殊 )
 *
 * @retval	"0 = 指定タイプのエンカウントはしない"
 * @retval	"1 = 指定タイプのエンカウントをする"
 *
 *	通常/特殊のエンカウントをするか
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2MAIN_EncTypeCheck( ZKN2_WORK * wk, u32 pos, u32 type );

//--------------------------------------------------------------------------------------------
/**
 * 分布リストの位置のゾーンＩＤ取得
 *
 * @param	wk		図鑑画面ワーク
 * @param	pos		リスト位置
 *
 * @return	ゾーンＩＤ
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2MAIN_ZoneIDGetPos( ZKN2_WORK * wk, u32 pos );

//--------------------------------------------------------------------------------------------
/**
 * フィールド分布データのゾーンＩＤ取得
 *
 * @param	map		分布マップ番号
 *
 * @return	ゾーンＩＤ
 *
 * @li	図鑑のマップ番号からゾーンＩＤを取得
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2MAIN_FldZoneIDGet( u32 map );

//--------------------------------------------------------------------------------------------
/**
 * ダンジョン分布データのゾーンＩＤ取得
 *
 * @param	map		分布マップ番号
 *
 * @return	ゾーンＩＤ
 *
 * @li	図鑑のマップ番号からゾーンＩＤを取得
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2MAIN_DanZoneIDGet( u32 map );

//--------------------------------------------------------------------------------------------
/**
 * ２番道路チェック
 *
 * @param	map		分布マップ番号
 *
 * @retval	"TRUE = ２番道路"
 * @retval	"FALSE = それ以外"
 */
//--------------------------------------------------------------------------------------------
extern BOOL ZKN2MAIN_ZoneIDRoad2Check( u32 map );

//--------------------------------------------------------------------------------------------
/**
 * ２番道路の分布マップ番号取得
 *
 * @param	none
 *
 * @return	分布マップ番号
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2MAIN_ZoneIDRoad2PosGet(void);

//--------------------------------------------------------------------------------------------
/**
 * １６番道路チェック
 *
 * @param	map		分布マップ番号
 *
 * @retval	"TRUE = １６番道路"
 * @retval	"FALSE = それ以外"
 */
//--------------------------------------------------------------------------------------------
extern BOOL ZKN2MAIN_ZoneIDRoad16Check( u32 map );

//--------------------------------------------------------------------------------------------
/**
 * １６番道路の分布マップ番号取得
 *
 * @param	none
 *
 * @return	分布マップ番号
 */
//--------------------------------------------------------------------------------------------
extern u32 ZKN2MAIN_ZoneIDRoad16PosGet(void);

//--------------------------------------------------------------------------------------------
/**
 * 分布グリッドデータ読み込み
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	nune
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_EncountGridDataLoad( ZKN2_WORK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 分布グリッドデータ解放
 *
 * @param	wk		図鑑画面ワーク
 *
 * @return	nune
 */
//--------------------------------------------------------------------------------------------
extern void ZKN2MAIN_EncountGridDataFree( ZKN2_WORK * wk );


#endif	// ZKN2_MAIN_H